package com.biannuo.szk.common.generator;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

/**
 * MyBatis-Plus代码自动生成，快速模式
 *
 * @author admin
 */
public class CodeGeneratorQuick {

    public static final String URL = "jdbc:mysql://192.168.200.33:13306/invx?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai";

    public static void main(String[] args) {
        String userDir = System.getProperty("user.dir");
        // 指定输出目录
        String outFile = userDir + "/files/mybatis-plus/java";
        String outMapperFile = userDir + "/files/mybatis-plus/mapper";
        FastAutoGenerator.create(URL, "root", "grid@123!#")
                // 全局配置
                .globalConfig(builder -> {
                    // 设置作者
                    builder.author("admin")
                            // 开启 swagger 模式
                            .enableSwagger()
                            // 覆盖已生成文件
//                            .fileOverride()
                            // 指定输出目录
                            .outputDir(outFile);
                }).packageConfig(builder -> {
                    // 设置父包名
                    builder.parent("com.biannuo.szk.community")
                            // 设置父包模块名
                            .moduleName("suzaku-boot")
                            // 设置mapperXml生成路径
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, outMapperFile));

                })
                // 策略配置
                .strategyConfig(builder -> {
                    // 设置需要生成的表名
                    // 设置过滤表前缀
                    builder.addInclude("inv_blog").addTablePrefix("t_", "c_");
                })
                // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                // 执行
                .execute();
    }
}
